__all__ = ['Car']
import time
from ParkingManagementSystem import *


class Car(ParkingManagementSystem):
    """数据元素类：定义一个关于车的类"""
    def __init__(self):
        """对车的属性进行初始化"""
        # 设定初始出场时间和消费金额为空
        self.exit_time = None
        self.cost = None
        # 初始编号 id 为 1
        self.id = 1
        # 读取文件中编号
        try:
            with open(
                    "D:\\2022常用文件\\课程\\Python\\Submit\\课后作业\\06\\附加作业\\count_id.txt",
                    "r") as file:
                self.id = int(file.read())
        except Exception as result:
            pass
        # 测试时使用
        print(self.id)

    def get_parking_info(self):
        """获取车辆停车信息"""
        # 调用父类中的属性
        ParkingManagementSystem.__init__(self)
        car_type = input("请输入车类型(car 或 truck)：")
        # 判断车位是否已满，如已满则提示客户去其他停车场，如未满则分配一个车位给客户
        if car_type == "car":
            # 如车位已满，提醒客户去其他停车场，car类型的车位设定为100个
            if len(self.car_stall) >= 100:
                print("小汽车车位已满，请去其他停车场。")
                return
            # 如还有车位，则分配一个车位给客户
            else:
                # 不同车型不同价位
                price = 10
                # 车位编号为：1-100
                for i in range(100):
                    # 分配空着的车位编号
                    if i + 1 not in self.car_stall:
                        p_number = i + 1
                        self.car_stall.append(p_number)
                        print(self.car_stall)
                        break
        elif car_type == "truck":
            # 如车位已满，提醒客户去其他停车场，truck类型的车位设定为50个
            if len(self.truck_stall) >= 50:
                print("货车车位已满，请去其他停车场。")
                return
            # 如还有车位，则分配一个车位给客户
            else:
                # 不同车型不同价位
                price = 20
                # 车位编号为：101-150
                for i in range(100, 150):
                    # 分配空着的车位编号
                    if i + 1 not in self.truck_stall:
                        p_number = i + 1
                        self.truck_stall.append(p_number)
                        print(self.truck_stall)
                        break
        else:
            print("本停车场没有适合该车型的停车位，请重新输入!")
            return
        # 接收车位编号
        car_number = input("请输入车牌号(示例：京A88888)：")
        # 接收经手人姓名
        handler = input("请输入经手人姓名：")
        # 接收入场时间
        entrance_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        # 接收使用日期
        date = time.strftime("%Y-%m-%d", time.localtime())
        # 编号 id 自动增长
        self.id += 1
        # 保存该条停车信息到字典
        parking_info = {
            "id": self.id,
            "car_type": car_type,
            "car_number": car_number,
            "handler": handler,
            "p_number": p_number,
            "date": date,
            "entrance_time": entrance_time,
            "exit_time": self.exit_time,
            "price": price,
            "cost": self.cost
        }
        print(parking_info)
        # 返回车辆停车信息
        return parking_info

    def save_id_to_file(self):
        """保存停车信息的最大编号 id ，作为下次运行id增长的基础"""
        with open(
                "D:\\2022常用文件\\课程\\Python\\Submit\\课后作业\\06\\附加作业\\count_id.txt",
                "w") as file:
            file.write(str(self.id))